﻿///////////////////////////////////////////////////////////////////////////////
// 文件名： Component.hpp
// 作者：   671643387@qq.com
// 日期：   2015年11月1日 下午6:37:25
// 简介：   
///////////////////////////////////////////////////////////////////////////////

#if !defined(GRAPHICS_COMPONENT_HPP_)
#define GRAPHICS_COMPONENT_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <string>
#include <boost/noncopyable.hpp>
#include <boost/shared_ptr.hpp>

namespace graphics
{
    namespace graphics
    {
        class SceneNode;
    }

    class Component : public boost::noncopyable
    {
    public:
        Component(std::string name);
        virtual ~Component(void);

    public:
        std::string GetName(void) const;
        void SetParent(::graphics::graphics::SceneNode* parent);
        bool IsEnable(void) const;
        void SetEnable(bool enable);

        virtual void Render(void);

    protected:
        std::string name_;
        ::graphics::graphics::SceneNode* parent_;
        bool enable_;
    };

    typedef boost::shared_ptr<Component> ComponentPtr;
}

#endif //GRAPHICS_COMPONENT_HPP_
